home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / xulrunner-1.9.0.14 / python / xpcom / primitives.py < prev    next >
Encoding:
Python Source  |  2006-01-20  |  1.5 KB  |  40 lines

  1. # Various utilities for working with nsISupportsPrimitive
  2. from xpcom import components
  3.  
  4. _primitives_map = {}
  5.  
  6. def _build_map():
  7.     ifaces = components.interfaces
  8.     iface = ifaces.nsISupportsPrimitive
  9.     m = _primitives_map
  10.     
  11.     m[iface.TYPE_ID] = ifaces.nsISupportsID
  12.     m[iface.TYPE_CSTRING] = ifaces.nsISupportsCString
  13.     m[iface.TYPE_STRING] = ifaces.nsISupportsString
  14.     m[iface.TYPE_PRBOOL] = ifaces.nsISupportsPRBool
  15.     m[iface.TYPE_PRUINT8] = ifaces.nsISupportsPRUint8
  16.     m[iface.TYPE_PRUINT16] = ifaces.nsISupportsPRUint16
  17.     m[iface.TYPE_PRUINT32] = ifaces.nsISupportsPRUint32
  18.     m[iface.TYPE_PRUINT64] = ifaces.nsISupportsPRUint64
  19.     m[iface.TYPE_PRINT16] = ifaces.nsISupportsPRInt16
  20.     m[iface.TYPE_PRINT32] = ifaces.nsISupportsPRInt32
  21.     m[iface.TYPE_PRINT64] = ifaces.nsISupportsPRInt64
  22.     m[iface.TYPE_PRTIME] = ifaces.nsISupportsPRTime
  23.     m[iface.TYPE_CHAR] = ifaces.nsISupportsChar
  24.     m[iface.TYPE_FLOAT] = ifaces.nsISupportsFloat
  25.     m[iface.TYPE_DOUBLE] = ifaces.nsISupportsDouble
  26.     # Do interface pointer specially - it provides the IID.
  27.     #m[iface.TYPE_INTERFACE_POINTER] = ifaces.nsISupportsDouble
  28.     
  29. def GetPrimitive(ob):
  30.     if len(_primitives_map)==0:
  31.         _build_map()
  32.  
  33.     prin = ob.QueryInterface(components.interfaces.nsISupportsPrimitive)
  34.     try:
  35.         better = _primitives_map[prin.type]
  36.     except KeyError:
  37.         raise ValueError, "This primitive type (%d) is not supported" % (prin.type,)
  38.     prin = prin.QueryInterface(better)
  39.     return prin.data
  40.